% Licensed under the Apache License, Version 2.0 (the "License"); you may not
% use this file except in compliance with the License. You may obtain a copy of
% the License at
%
%   http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
% License for the specific language governing permissions and limitations under
% the License.

%%% @author CA Meijer
%%% @copyright 2012 CA Meijer
%%% @doc Nimbula Director API. This module provides functions for user management.
%%% @end

-module(nimbula_user).

%% Include files
-include("nimbula_records.hrl").

%% Exported Functions
-export([add/2,
		 delete/2,
		 discover/1,
		 discover/2,
		 get/2,
		 list/1,
		 list/2,
		 update/2]).

%% API Functions
add(Pid, User) when is_record(User, user) ->
	nimbula_objects:add(Pid, ?record_fields(user), User).

delete(Pid, User) ->
	nimbula_objects:delete(Pid, ?record_fields(user), User).

discover(Pid) ->
	nimbula_objects:discover(Pid, ?record_fields(user)).

discover(Pid, Container) ->
	nimbula_objects:discover(Pid, ?record_fields(user), Container).
	
get(Pid, User) ->
	nimbula_objects:get(Pid, ?record_fields(user), User).
	
list(Pid) ->
	nimbula_objects:list(Pid, ?record_fields(user)).

list(Pid, Container) ->
	nimbula_objects:list(Pid, ?record_fields(user), Container).

update(Pid, User) when is_record(User, user) ->
	nimbula_objects:update(Pid, ?record_fields(user), User#user.username, User).
